package com.ffox.controller;

import com.ffox.entity.CourseFile;
import com.ffox.entity.CourseList;
import com.ffox.service.CourseService;
import com.ffox.service.dto.CourseDetails;
import jakarta.servlet.annotation.MultipartConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 课程管理控制器类
 * 处理课程相关的HTTP请求，包括课程的增删查等操作
 */
@RestController
@RequestMapping("/course")
public class CourseController {
    @Autowired
    private CourseService courseService;

    /**
     * 插入新的课程信息
     * @param courseList 课程列表信息对象
     * @param files 上传的文件数组
     * @return 插入操作影响的记录数
     */
    @RequestMapping(value = "/insertCourse",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public Integer insertCourse(@ModelAttribute CourseList courseList, @RequestParam("files") MultipartFile[]  files){
        System.out.println("经过Controller");
        return courseService.insertCourse(courseList,files);
    }

    /**
     * 获取所有课程列表
     * @return 课程列表集合
     */
    @RequestMapping("/getCourseList")
    public List<CourseList> getCourseList(){
        return courseService.getCourseList();
    }

    /**
     * 根据课程列表ID获取课程文件信息
     * @param listId 课程列表ID
     * @return 课程文件信息集合
     */
    @RequestMapping("/getCourseFile")
    public List<CourseFile> getCourseFile(@RequestParam Integer listId){
        return courseService.getCourseFile(listId);
    }

    /**
     * 根据用户编号获取课程列表
     * @param userNum 用户编号
     * @return 该用户相关的课程列表集合
     */
    @RequestMapping("/getCourseListByUserNum")
    public List<CourseList> getCourseListByUserNum(@RequestParam String userNum){
        return courseService.getCourseListByUserNum(userNum);
    }

    /**
     * 删除课程信息
     * @param id 课程ID
     * @return 删除操作影响的记录数
     */
    @RequestMapping("/deleteCourse")
    public Integer deleteCourseFile(@RequestParam Integer id){
        return courseService.deleteCourse(id);
    }

    /**
     * 获取课程详情信息
     *
     * @param listId 课程列表ID，用于标识特定的课程
     * @return CourseDetails 课程详情对象，包含课程的详细信息
     */
    @RequestMapping("/getCourseDetails")
    public CourseDetails getCourseDetails(@RequestParam Integer listId){
        return courseService.getCourseDetails(listId);
    }

}

